/*
编写一个程序，接受用户输入的一个字符串，并将其中的所有单词反转后输出。
*/

#include <stdio.h>
#include <string.h>

#define BUFFER_SIZE 100

int mostFreqChar(char *str)
{
    if (str == NULL)
    {
        return 0;
    }


    int idx = 0;
    int pos = 0;
    /* 用于遍历字符串是否达到字符串的结尾即空字符\0 遇到\0时会结束 */
    while (str[idx])
    {
        /* 遇到空格会反转前面的单词 */
        if (str[idx] == ' ')
        {
            /* 记录当前单词的末尾位置 */
            int worldEnd = idx - 1;
            while (pos < worldEnd)
            {
                char temp;
                temp = str[pos];
                str[pos] = str[worldEnd];
                str[worldEnd] = temp;
                pos++;
                worldEnd--;
            }
            /* 出了循环，跳空格 */
            idx++;
            /* 重新记录单词反转的位置 */
            pos = idx;

        }
        else
        {
            /* 继续向下遍历 */
            idx++;
        }
    }
    /* 反转最后一个单词 */
    int lastWorldEnd = idx - 1;
    while (pos < lastWorldEnd)
    {
        char temp;
        temp = str[pos];
        str[pos] = str[lastWorldEnd];
        str[lastWorldEnd] = temp;
        pos++;
        lastWorldEnd--;
    }


}

int main()
{
    char str[BUFFER_SIZE];
    char ch;
    
    printf("请输入一个字符串：%s\n", str);
    
    /* 字符串输入函数 */
    fgets(str, sizeof(str), stdin);
    printf("每个单词反转之后\n");
    mostFreqChar(str);
    printf("%s\n", str);
    
    
    return 0;
}